package org.demo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 与Employee结构无异，但是对大量的Mybatis-Plus注解进行属性设置，测试效果
 *
 * @author yexi
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("employee")
public class EmployeeExtend implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * {@code @TableId}: 当前属性映射的表字段标识。主键，若不指定则将属性名视作列名
     * value: 字段名，默认是转换的属性名(转换规则见mapUnderscoreToCamelCase)。
     * type: 主键操作策略。可选值参考IdType枚举类。IdType.AUTO表示自动增长(从最大算起，后续+1)。
     */
    @TableId(type = IdType.AUTO)
    private Integer empNo;

    /**
     * {@code @TableField}: 当前属性映射的表字段标识。列名，若不指定则将属性名视作列名
     * value: 当前属性映射哪一列，默认是转换的属性名(转换规则见mapUnderscoreToCamelCase)。
     * exist: 默认true。如果设置为 false 则表示当前的属性不参与表的列映射。
     * fill: 字段自动填充策略(也就是如果值为null时进行填充的策略)。可选值参考FieldFill枚举类。FieldFill.INSERT表示插入时填充。
     */
    @TableField(value = "emp_name")
    private String name;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double salary;
    private Double bonus;
    private Integer deptNo;

    @TableField(exist = false)
    private Department department;

    @TableField(exist = false)
    private String xxx;
}
